﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace RecetasWP7
{
    
    /* COMENTARIO DE PRUEBA */
    public partial class MainPage : PhoneApplicationPage
    {
        

        // Constructor
        public MainPage()
        {
            InitializeComponent();

            //Inicializacion de la base de datos local (Recetas Favoritas)
            using (ModelDBDataContext dataContext = new ModelDBDataContext("Data Source = 'isostore:/RecetasFavoritasDB.sdf'"))
            {
                
                if (!dataContext.DatabaseExists())
                {
                    dataContext.CreateDatabase();

                    //List<RecetaFavorita> recetasFav = new List<RecetaFavorita>()
                    //{
                    //    new RecetaFavorita()
                    //    {
                    //        id=1, titulo="receta1", ingredientes="ing1", preparacion="preparacion1"
                    //    },

                    //    new RecetaFavorita()
                    //    {
                    //        id=2, titulo="receta2", ingredientes="ing2", preparacion="preparacion2"
                    //    },
                    
                    //};

                    //dataContext.RecetaFavoritas.InsertAllOnSubmit(recetasFav);
                    //dataContext.SubmitChanges();
                }
                

            }    

        }

        

        private void BUSQUEDA_GotFocus(object sender, RoutedEventArgs e)
        {
            BUSQUEDA.Text = "";
            BUSQUEDA.Foreground = new SolidColorBrush(Colors.Black);
            BUSQUEDA.FontStyle = new FontStyle();
        }

        private void OK_BUTTON_Click(object sender, RoutedEventArgs e)
        {
            efectuarBusqueda();                       
        }

        private void efectuarBusqueda()
        {
            // Reseteo el texto de busqueda
            string queryString = BUSQUEDA.Text;
            BUSQUEDA.Text = "Buscar...";
            BUSQUEDA.Foreground = new SolidColorBrush(Colors.Gray);
            BUSQUEDA.FontStyle = FontStyles.Italic;

            // Consumo el servicio web y pido las recetas con el texto ingresado

            // Creo el proxy al servicio
            RecetasReference.RecetasServiceClient proxy = new RecetasReference.RecetasServiceClient();

            proxy.buscarRecetasCompleted += new EventHandler<RecetasReference.buscarRecetasCompletedEventArgs>(mostrarRecetas);
            proxy.buscarRecetasAsync(queryString); 
        }

        
        void mostrarRecetas(object sender, RecetasReference.buscarRecetasCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                //List<string> titulos = new List<string>();
                //foreach (var receta in e.Result)
                //{
                //    titulos.Add(receta.Titulo);
                //}
               
                LISTA_RECETAS.ItemsSource = e.Result.ToList();      
                
                    
            }
        }

        List<RecetaFavorita> misRecetasFavoritas { set; get; }

        private void FAV_BUTTON_Click(object sender, RoutedEventArgs e)
        {
            using (ModelDBDataContext contextoDatos = new ModelDBDataContext("Data Source = 'isostore:/RecetasFavoritasDB.sdf'"))
            {
                misRecetasFavoritas = contextoDatos.RecetaFavoritas.ToList();
            }
            
            LISTA_RECETAS.ItemsSource = misRecetasFavoritas;
        }

        private void LISTA_RECETAS_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //Obtenemos el item seleccionado en la lista.
            Object o = LISTA_RECETAS.SelectedItem;

            if (o is RecetasWP7.RecetasReference.DataId)
            {
                add_fav.Visibility = System.Windows.Visibility.Visible;

                RecetasWP7.RecetasReference.DataId recetaSeleccionada = (RecetasWP7.RecetasReference.DataId)o;

                // Creo el proxy al servicio
                RecetasReference.RecetasServiceClient proxy = new RecetasReference.RecetasServiceClient();

                proxy.verRecetaCompleted += new EventHandler<RecetasReference.verRecetaCompletedEventArgs>(verReceta);
                proxy.verRecetaAsync(recetaSeleccionada);
            }
            else if (o is RecetaFavorita)
            {
                add_fav.Visibility = System.Windows.Visibility.Collapsed;

                RecetaFavorita recetaSeleccionada = (RecetaFavorita) o;

                // Seteamos los datos en el panel
                textBlockTitulo.Text = recetaSeleccionada.titulo;
                textBlockPreparacion.Text = recetaSeleccionada.preparacion;
                textBlockIngredientes.Text = recetaSeleccionada.ingredientes;

                // Hacemos visible el panel.
                ContentPane2.Visibility = System.Windows.Visibility.Visible;
            }
            else { 
            
            }   
            
        }

        void verReceta(object sender, RecetasReference.verRecetaCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                // Seteamos los datos en el panel
                textBlockTitulo.Text = e.Result.titulo;
                textBlockPreparacion.Text = e.Result.preparacion;
                textBlockIngredientes.Text = e.Result.ingredientes;

                // Hacemos visible el panel.
                ContentPane2.Visibility = System.Windows.Visibility.Visible;
            }
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            ContentPane2.Visibility = System.Windows.Visibility.Visible;
    
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            ContentPane2.Visibility = System.Windows.Visibility.Collapsed;
        }

        private void Box_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key.Equals(Key.Enter))
            {
                efectuarBusqueda();
            }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Object o = LISTA_RECETAS.SelectedItem;
            if (o is RecetasWP7.RecetasReference.DataId)
            {
                add_fav.Visibility = System.Windows.Visibility.Collapsed;

                using (ModelDBDataContext dataContexto = new ModelDBDataContext("Data Source = 'isostore:/RecetasFavoritasDB.sdf'"))
                {
                    RecetasWP7.RecetasReference.DataId recetaSeleccionada = (RecetasWP7.RecetasReference.DataId)o;
                    RecetaFavorita nuevaRF = new RecetaFavorita()
                    {
                        id = recetaSeleccionada.id,
                        titulo = textBlockTitulo.Text,
                        ingredientes = textBlockPreparacion.Text,
                        preparacion = textBlockIngredientes.Text
                    };

                    dataContexto.RecetaFavoritas.InsertOnSubmit(nuevaRF);
                    dataContexto.SubmitChanges();
                }

            }
        }

    }
}
